//*EDGJACTP JOB <JOB STATEMENT PARAMETERS>
//*
//*********************************************************************
//* DFSMS/MVS 1.5.0 DFSMSrmm                                          *
//*                                                                   *
//* PROPRIETARY V3 STATEMENT                                          *
//* LICENSED MATERIALS - PROPERTY OF IBM                              *
//* "RESTRICTED MATERIALS OF IBM"                                     *
//* 5695-DF1                                                          *
//* (C) COPYRIGHT 1993,2000  IBM CORP.                                *
//* STATUS = HDZ11E0                                                  *
//* END PROPRIETARY V3 STATEMENT                                      *
//*********************************************************************
//*
//* RMM report on ACTIVITY file contents
//* ------------------------------------
//*
//* INPUT: ACTIVITY DD Statement - current RMM activity file
//* OUTPUT:
//*    RUNINFO  DD Statement - Controlling options and parameters
//*    VRS      DD Statement - data sets with changed V/R status
//*    VRSS     DD Statement - summary by status
//*    RETD     DD Statement - data sets with new retention date
//*    RETDS    DD Statement - summary by new date
//*    MATCHVRS DD Statement - data sets with new matching VRS
//*    MATCHVS  DD Statement - summary by new matching VRS
//*    SUBCHN   DD Statement - data sets retained by new part of chain
//*    SUBCHNS  DD Statement - summary by new retaining subchain
//*
//* DEPENDANCY: DFSORT R14, for SYMNAMES support
//*
//* Change History:
//* $S5=OW24798,130,961002,MWW: Created for Audit Phase 1 SPE
//* $K1=K140934,140,970408,BDG: Corrected BREAK for drop reason    K1A
//* $S7=OW30969,140,971217,AE : VRS Enhancements                   S7A
//* $LG=           ,990924,AH : DFSORT Symbols                     LGA
//* $K2=           ,991125,CHK: Correct the SYMNAMES library name  K2A
//*
//*********************************************************************
//CLEAN    EXEC PGM=IDCAMS
//SYSPRINT DD   SYSOUT=*
//SYSIN    DD   *
  DELETE 'RMM.REPORT.RUNINFO'
  DELETE 'RMM.REPORT.VRS'
  DELETE 'RMM.REPORT.VRSS'
  DELETE 'RMM.REPORT.RETDATE'
  DELETE 'RMM.REPORT.RETDS'
  DELETE 'RMM.REPORT.MATCHVRS'
  DELETE 'RMM.REPORT.MATCHVS'
  DELETE 'RMM.REPORT.SUBCHN'
  DELETE 'RMM.REPORT.SUBCHNS'
//*********************************************************************
//STEP1    EXEC PGM=ICETOOL,REGION=5M
//TOOLMSG  DD   SYSOUT=*        ICETOOL MESSAGES
//DFSMSG   DD   SYSOUT=*        DFSORT  MESSAGES
//SYMNOUT  DD SYSOUT=*
//SYMNAMES DD DSN=SYS1.MACLIB(EDGACTSY),DISP=SHR                   K2C
//  DD *
* TEMPORARY 2-BYTE FIELD ORGED OVER ACTRC_DSN_OLD_VITAL
POSITION,ACTRC_DSN_OLD_VITAL
TEMP_VITAL,*,2,CH
  TEMP_VITAL_RETAINED,C'NY'
  TEMP_VITAL_DROPPED,C'YN'
* TEMPOARY REFORMATTED VRST FIELDS
VRST_RDW,1,4
VRST_DSN_DSNAME,*,44,CH
VRST_DSN_JOBNAME,*,8,CH
VRST_DSN_VOL,*,6,CH
VRST_DSN_NEW_MMASK,*,44,CH
VRST_DSN_NEW_MJOB,*,8,CH
VRST_DSN_NEW_MTYPE,*,1,CH
VRST_DSN_OLD_VITAL,*,1,CH
VRST_DSN_NEW_VITAL,*,1,CH
VRST_DSN_DROP,*,1,CH
VRST_DSN_STATUS_REASON,*,22,CH
  VRST_DSN_STATUS,=,9,CH
  VRST_DSN_REASON,*,13,CH
* TEMPORARY 69-BYTE FIELD ORGED OVER ACTRC_DSN_NEW_MTYPE
POSITION,ACTRC_DSN_NEW_MTYPE
TEMP_NEW_VRS,*,69,CH
* TEMPORARY 36-BYTE FIELD ORGED OVER ACTRC_DSN_NEW_MNAME
POSITION,ACTRC_DSN_NEW_MNAME
TEMP_NEW_CHAIN,*,36,CH
* TEMPORARY 16-BYTE FIELD ORGED OVER ACTRC_DSN_NEW_M2MASK
POSITION,ACTRC_DSN_NEW_M2MASK
TEMP_2ND_VRS,*,16,CH
* TEMPORARY 36-BYTE FIELD ORGED OVER ACTRC_DSN_OLD_MNAME
POSITION,ACTRC_DSN_OLD_MNAME
TEMP_OLD_CHAIN,*,36,CH
//TOOLIN   DD   *               CONTROL STATEMENTS
  COPY    FROM(ACTIVITY) USING(VRST)
  SORT    FROM(VRST)     TO(SRTDVRST)  USING(SRTV)
  SORT    FROM(RETD)     TO(SRTDRETD)  USING(SRTD)
  SORT    FROM(MTCH)     TO(SRTDMTCH)  USING(SRTM)
  SORT    FROM(SUBC)     TO(SRTDSUBC)  USING(SRTC)
*
*
*
  DISPLAY FROM(SRTDVRST) LIST(VRS) -
     TITLE('Data Sets Changed VRS Status') DATE TIME PAGE -
     BLANK -
     BTITLE('Status Change and Drop Reason:') -
     BREAK(VRST_DSN_STATUS_REASON) -
     HEADER('DSNAME')       ON(VRST_DSN_DSNAME) -
     HEADER('JOBNAME')      ON(VRST_DSN_JOBNAME) -
     HEADER('VOLSER')       ON(VRST_DSN_VOL) -
     HEADER('O-ST')         ON(VRST_DSN_OLD_VITAL) -
     HEADER('N-ST')         ON(VRST_DSN_NEW_VITAL) -
     HEADER('RSN')          ON(VRST_DSN_DROP) -
     HEADER('PRIMARY VRS')  ON(VRST_DSN_NEW_MMASK) -
     HEADER('JOB MASK')     ON(VRST_DSN_NEW_MJOB) -
     HEADER('TYPE')         ON(VRST_DSN_NEW_MTYPE)
*
  OCCUR FROM(SRTDVRST) LIST(VRSS) -
     TITLE('Data Set VRS status change summary') -
     DATE TIME PAGE -
     BLANK -
     HEADER('Status Change') ON(VRST_DSN_STATUS) -
     HEADER('Drop Reason')   ON(VRST_DSN_REASON) -
     HEADER('COUNT') ON(VALCNT)
*
*
  DISPLAY FROM(SRTDRETD) LIST(RETDATE) -
     TITLE('Data Sets Changed Retention Date') DATE TIME PAGE -
     BLANK -
     BTITLE('New Retention Date:') BREAK(ACTRC_DSN_NEW_RETDATE) -
     HEADER('DSNAME')       ON(ACTRC_DSN_DSNAME) -
     HEADER('JOBNAME')      ON(ACTRC_DSN_JOBNAME) -
     HEADER('VOLSER')       ON(ACTRC_DSN_VOL) -
     HEADER('PREVIOUS')     ON(ACTRC_DSN_OLD_RETDATE) -
     HEADER('NEW DATE')     ON(ACTRC_DSN_NEW_RETDATE) -
     HEADER('PRIMARY VRS')  ON(ACTRC_DSN_NEW_MMASK) -
     HEADER('JOB MASK')     ON(ACTRC_DSN_NEW_MJOB) -
     HEADER('TYPE')         ON(ACTRC_DSN_NEW_MTYPE) -
     HEADER('SUBCHAIN')     ON(ACTRC_DSN_NEW_MNAME)
*
  OCCUR FROM(SRTDRETD) LIST(RETDS) -
     TITLE('Summary of new Data Set retention dates') -
     DATE TIME PAGE -
     BLANK -
     HEADER('New Retention Date') ON(ACTRC_DSN_NEW_RETDATE) -
     HEADER('COUNT') ON(VALCNT)
*
*
  DISPLAY FROM(SRTDMTCH) LIST(MATCHVRS) -
     TITLE('Data Sets Matching to different VRS') DATE TIME PAGE -
     BLANK -
     BTITLE('NEW PRIMARY VRS:') BREAK(TEMP_NEW_VRS) -
     HEADER('DSNAME')           ON(ACTRC_DSN_DSNAME) -
     HEADER('JOBNAME')          ON(ACTRC_DSN_JOBNAME) -
     HEADER('VOLSER')           ON(ACTRC_DSN_VOL) -
     HEADER('O-ST')             ON(ACTRC_DSN_OLD_VITAL) -
     HEADER('N-ST')             ON(ACTRC_DSN_NEW_VITAL) -
     HEADER('DROPRSN')          ON(ACTRC_DSN_DROP) -
     HEADER('OLD PRIMARY VRS')  ON(ACTRC_DSN_OLD_MMASK) -
     HEADER('JOB MASK')         ON(ACTRC_DSN_OLD_MJOB) -
     HEADER('TYPE')             ON(ACTRC_DSN_OLD_MTYPE) -
     HEADER('2nd. VRS')         ON(ACTRC_DSN_OLD_M2MASK) -
     HEADER('2nd. JOB')         ON(ACTRC_DSN_OLD_M2JOB)
*
  OCCUR FROM(SRTDMTCH) LIST(MATCHVS) -
     TITLE('Summary of new matching VRSs') -
     DATE TIME PAGE -
     BLANK -
     HEADER('New Primary VRS')  ON(ACTRC_DSN_NEW_MMASK) -
     HEADER('Jobname mask')     ON(ACTRC_DSN_NEW_MJOB) -
     HEADER('Match Type')       ON(ACTRC_DSN_NEW_MTYPE) -
     HEADER('COUNT') ON(VALCNT)
*
*
  DISPLAY FROM(SRTDSUBC) LIST(SUBCHN) -
     TITLE('Data Sets Changed VRS Subchain') DATE TIME PAGE -
     BLANK -
     BTITLE('NEW SUBCHAIN AND DATE:') BREAK(TEMP_NEW_CHAIN) -
     HEADER('DSNAME')           ON(ACTRC_DSN_DSNAME) -
     HEADER('JOBNAME')          ON(ACTRC_DSN_JOBNAME) -
     HEADER('VOLSER')           ON(ACTRC_DSN_VOL) -
     HEADER('PRIMARY VRS')      ON(ACTRC_DSN_NEW_MMASK) -
     HEADER('JOB MASK')         ON(ACTRC_DSN_NEW_MJOB) -
     HEADER('TYPE')             ON(ACTRC_DSN_NEW_MTYPE) -
     HEADER('2nd.VRS JOB')      ON(TEMP_2ND_VRS) -
     HEADER('SUBCHAIN DATE     2nd.SUBC DATE') ON(TEMP_OLD_CHAIN)
*
  OCCUR FROM(SRTDSUBC) LIST(SUBCHNS) -
     TITLE('Summary of new Data Set subchains') -
     DATE TIME PAGE -
     BLANK -
     HEADER('New Subchain') ON(TEMP_NEW_CHAIN) -
     HEADER('COUNT') ON(VALCNT)
*
//ACTIVITY DD DSN=RMM.ACTIVITY.FILE,DISP=SHR
//VRST     DD DSN=&&TEMPV1,SPACE=(CYL,(10,10),RLSE),UNIT=SYSALLDA
//RETD     DD DSN=&&TEMPD1,SPACE=(CYL,(10,10),RLSE),UNIT=SYSALLDA
//MTCH     DD DSN=&&TEMPM1,SPACE=(CYL,(10,10),RLSE),UNIT=SYSALLDA
//SUBC     DD DSN=&&TEMPC1,SPACE=(CYL,(10,10),RLSE),UNIT=SYSALLDA
//SRTDVRST DD DSN=&&TEMPV2,SPACE=(CYL,(10,10),RLSE),UNIT=SYSALLDA
//SRTDRETD DD DSN=&&TEMPD2,SPACE=(CYL,(10,10),RLSE),UNIT=SYSALLDA
//SRTDMTCH DD DSN=&&TEMPM2,SPACE=(CYL,(10,10),RLSE),UNIT=SYSALLDA
//SRTDSUBC DD DSN=&&TEMPC2,SPACE=(CYL,(10,10),RLSE),UNIT=SYSALLDA
//VRSTCNTL DD *
  OUTFIL FNAMES=RUNINFO,
   INCLUDE=(ACTRC_PRE_TYPE,EQ,ACTRC_PRE_TYPE_HDR),
   HEADER2=(1:'Run Control Information',2X,DATE,2X,TIME,2X,PAGE,/,
          1:'Run Date',
         12:'Date Used',
         23:'Run Time',
         32:'Options',
         72:'DATEFORM',
         81:'VRSJOBNAME',
         92:'VRSCHANGE',
        102:'CATRETPD',
        111:'VRSMIN Count',
        124:'VRSMIN Action',
        138:'VRSEL',
        144:'UNCATALOG',
        154:'TPRACF',
        161:'SYSID',
        170:'CATSYSID',/,
          1:10'-',
         12:10'-',
         23:8'-',
         32:33'-',
         72:8'-',
         81:10'-',
         92:9'-',
        102:8'-',
        111:12'-',
        124:13'-',
        138:5'-',
        144:9'-',
        154:6'-',
        161:8'-',
        170:8'-'),
   OUTREC=(ACTRC_RDW,
         5:ACTRC_HDR_RUN_DATE,
        16:ACTRC_HDR_VERIFY_DATE,
        27:ACTRC_HDR_RUN_TIME,
        36:ACTRC_HDR_BACKUP,CHANGE=(6,ACTRC_YES,C'BACKUP',
                                      ACTRC_NO,C' '),X,
           ACTRC_HDR_DSTORE,CHANGE=(6,ACTRC_YES,C'DSTORE',
                                      ACTRC_NO,C' '),X,
           ACTRC_HDR_EXPROC,CHANGE=(6,ACTRC_YES,C'EXPROC',
                                      ACTRC_NO,C' '),X,
           ACTRC_HDR_RPTEXT,CHANGE=(6,ACTRC_YES,C'RPTEXT',
                                      ACTRC_NO,C' '),X,
           ACTRC_HDR_VRSEL,CHANGE=(5,ACTRC_YES,C'VRSEL',
                                      ACTRC_NO,C' '),X,
           ACTRC_HDR_DATE,CHANGE=(4,ACTRC_YES,C'DATE',
                                      ACTRC_NO,C' '),
        76:ACTRC_HDR_DATEFORM,CHANGE=(8,
             ACTRC_HDR_DATEFORM_AMERICAN,C'AMERICAN',
             ACTRC_HDR_DATEFORM_EUROPEAN,C'EUROPEAN',
             ACTRC_HDR_DATEFORM_ISO,C'ISO',
             ACTRC_HDR_DATEFORM_JULIAN,C'JULIAN'),X,
        85:ACTRC_HDR_VRSJOBNAME,
        96:ACTRC_HDR_VRSCHANGE,CHANGE=(6,
             ACTRC_HDR_VRSCHANGE_VERIFY,C'VERIFY',
             ACTRC_HDR_VRSCHANGE_INFO,C'INFO'),
       106:ACTRC_HDR_CATRETPD,
       115:ACTRC_HDR_VRSMIN_COUNT,
       128:ACTRC_HDR_VRSMIN_ACTION,CHANGE=(4,
             ACTRC_HDR_VRSMIN_ACTION_FAIL,C'FAIL',
             ACTRC_HDR_VRSMIN_ACTION_WARN,C'WARN',
             ACTRC_HDR_VRSMIN_ACTION_INFO,C'INFO'),
       142:ACTRC_HDR_OPT_VRSEL,CHANGE=(3,
             ACTRC_HDR_OPT_VRSEL_NEW,C'NEW',
             ACTRC_HDR_OPT_VRSEL_OLD,C'OLD',
             ACTRC_HDR_OPT_VRSEL_BLANK,C'OLD'),
       148:ACTRC_HDR_UNCATALOG,
       158:ACTRC_HDR_TPRACF,
       165:ACTRC_HDR_SYSID,
       174:ACTRC_HDR_CATSYSID,CHANGE=(8,
             ACTRC_HDR_CATSYSID_NOT_SET,C'NOT SET',
             ACTRC_HDR_CATSYSID_SET,C'SET',
             ACTRC_HDR_CATSYSID_SHARED,C'SHARED'))

   OUTFIL FNAMES=VRST,
     INCLUDE=(ACTRC_PRE_TYPE,EQ,ACTRC_PRE_TYPE_DSN,AND,
              ACTRC_DSN_CHNG_VRS,EQ,ACTRC_YES),
     OUTREC=(ACTRC_RDW,
             ACTRC_DSN_DSNAME,
             ACTRC_DSN_JOBNAME,
             ACTRC_DSN_VOL,
             ACTRC_DSN_NEW_MMASK,
             ACTRC_DSN_NEW_MJOB,
             ACTRC_DSN_NEW_MTYPE,
             ACTRC_DSN_OLD_VITAL,
             ACTRC_DSN_NEW_VITAL,
             ACTRC_DSN_DROP,
             TEMP_VITAL,CHANGE=(9,TEMP_VITAL_RETAINED,C'RETAINED',
                                  TEMP_VITAL_DROPPED,C'DROPPED'),
             ACTRC_DSN_DROP,CHANGE=(13,
               ACTRC_DSN_DROP_WHILECATALOG,C'WHILECATALOG',
               ACTRC_DSN_DROP_BLANK,C' ',
               ACTRC_DSN_DROP_UNTILEXPIRED,C'UNTILEXPIRED',
               ACTRC_DSN_DROP_CYCLES,C'CYCLES',
               ACTRC_DSN_DROP_DAYS,C'DAYS',
               ACTRC_DSN_DROP_LASTREF,C'LASTREFDAYS',
               ACTRC_DSN_DROP_EXTRADAYS,C'EXTRADAYS',
               ACTRC_DSN_DROP_BYDAYSCYCLE,C'BYDAYSCYCLE',
               ACTRC_DSN_DROP_NO_MATCH,C'NO MATCH',
               ACTRC_DSN_DROP_DUP_GDG,C'DUPL. GDG',
               ACTRC_DSN_DROP_VOL_RELEASED,C'VOL RELEASED'))

  OUTFIL  FNAMES=RETD,
   INCLUDE=(ACTRC_PRE_TYPE,EQ,ACTRC_PRE_TYPE_DSN,AND,
            ACTRC_DSN_CHNG_RETDATE,EQ,ACTRC_YES)

  OUTFIL  FNAMES=MTCH,
   INCLUDE=(ACTRC_PRE_TYPE,EQ,ACTRC_PRE_TYPE_DSN,AND,
            ACTRC_DSN_CHNG_MATCH,EQ,ACTRC_YES)

  OUTFIL  FNAMES=SUBC,
   INCLUDE=(ACTRC_PRE_TYPE,EQ,ACTRC_PRE_TYPE_DSN,AND,
            ACTRC_DSN_CHNG_SUBCHAIN,EQ,ACTRC_YES)

  OPTION VLSHRT
//SRTVCNTL DD *
* Sort on status change fields
   SORT FIELDS=(VRST_DSN_OLD_VITAL,A,
                VRST_DSN_NEW_VITAL,A,
                VRST_DSN_DROP,A)
//SRTDCNTL DD *
* Sort on new retention date
  SORT FIELDS=(ACTRC_DSN_NEW_RETDATE,A)
//SRTMCNTL DD *          DFSORT STATEMENTS - SORT AND REFORMAT
* Sort on new matching VRS fields
  SORT FIELDS=(ACTRC_DSN_NEW_MTYPE,A,
               ACTRC_DSN_NEW_MMASK,A,
               ACTRC_DSN_NEW_MJOB,A)
//SRTCCNTL DD *          DFSORT STATEMENTS - SORT AND REFORMAT
* Sort on new subchain name and start date
  SORT FIELDS=(TEMP_NEW_CHAIN,A)
/*
//*
//RUNINFO  DD DSN=RMM.REPORT.RUNINFO,DISP=(,CATLG,DELETE),
//            SPACE=(CYL,(1,1),RLSE),UNIT=SYSALLDA
//VRS      DD DSN=RMM.REPORT.VRS,DISP=(,CATLG,DELETE),
//            SPACE=(CYL,(9,9),RLSE),UNIT=SYSALLDA
//VRSS     DD DSN=RMM.REPORT.VRSS,DISP=(,CATLG,DELETE),
//            SPACE=(CYL,(9,9),RLSE),UNIT=SYSALLDA
//RETDATE  DD DSN=RMM.REPORT.RETDATE,DISP=(,CATLG,DELETE),
//            SPACE=(CYL,(9,9),RLSE),UNIT=SYSALLDA
//RETDS    DD DSN=RMM.REPORT.RETDS,DISP=(,CATLG,DELETE),
//            SPACE=(CYL,(9,9),RLSE),UNIT=SYSALLDA
//MATCHVRS DD DSN=RMM.REPORT.MATCHVRS,DISP=(,CATLG,DELETE),
//            SPACE=(CYL,(9,9),RLSE),UNIT=SYSALLDA
//MATCHVS  DD DSN=RMM.REPORT.MATCHVS,DISP=(,CATLG,DELETE),
//            SPACE=(CYL,(9,9),RLSE),UNIT=SYSALLDA
//SUBCHN   DD DSN=RMM.REPORT.SUBCHN,DISP=(,CATLG,DELETE),
//            SPACE=(CYL,(9,9),RLSE),UNIT=SYSALLDA
//SUBCHNS  DD DSN=RMM.REPORT.SUBCHNS,DISP=(,CATLG,DELETE),
//            SPACE=(CYL,(9,9),RLSE),UNIT=SYSALLDA
